package com.lyrcsoft.rxjava1x;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;

import java.io.File;

/**
 * Observable：
 * Observer：观察接口，
 * Subscriber：Subscriber（观察者），实现Observer接口
 * Subject：
 *
 * @author fujc2dev@126.com
 * @date 2024-11-11
 */
public class Rx1Demo1 {
    public static void main(String[] args) {
        // Subscriber：具体的观察者
        // Observable：当使用 RxJava 1.x 中的 Observable 时，
        // 可以将一些异步操作，比如网络请求、数据库操作、文件读写等，
        // 封装成一个可观察的序列。
        // 这样可以方便地对这些异步操作进行管理、组合和处理。
        // 通过 Observable，您可以轻松地实现数据的订阅、触发和响应式编程。
        // 您可以通过 Observable 发射数据序列，然后通过各种操作符对这些数据进行处理、过滤、转换等操作，
        // 最终将结果发送给订阅者。
        // 总的来说，Observable 可以帮助您简化异步编程的复杂性，
        // 提高代码的可读性和可维护性，并让您更轻松地处理数据流。

        Observable.create(new Observable.OnSubscribe<Integer>() {
                    @Override
                    public void call(Subscriber<? super Integer> subscriber) {
                        for (int i = 0; i < 10; i++) {
                            subscriber.onNext(i);
                        }
                        // 执行完毕后触发，结束
                        subscriber.onCompleted();
                    }
                })
                // 订阅
                .subscribe(new Subscriber<Integer>() {
                    @Override
                    public void onCompleted() {
                        System.out.println("RxJava1:onCompleted");
                    }

                    @Override
                    public void onError(Throwable t) {

                    }

                    @Override
                    public void onNext(Integer var1) {
                        System.out.println(var1);
                    }
                });
    }
}
